Fix build with newer Apple clang#13157
Merged
Merged
Conversation
Four issues from newer Apple clang (version 21): 1. TextView.h: -Wdeprecated-literal-operator flags the whitespace between `""` and the suffix identifier in user-defined literal operator declarations. Remove the space in `operator"" _tv` and `operator"" _sv`. 2. configure.ac: the version check added in PR apache#12834 only applied -Wno-cast-function-type-mismatch when Apple clang was exactly version 17, so the flag was silently skipped on 21+. Extend the check to match version >= 17. 3. CryptoHash.h: memset/memcpy on non-trivially-copyable union type trip -Wnontrivial-memcall. Cast `this` to `void *`. 4. HostStatus.cc: same issue with bzero on HostStatRec.
Member
Author
|
[approve ci autest 2] |
zwoop
reviewed
May 13, 2026
|
|
||
| /// Default constructor - init to zero. | ||
| CryptoHash() { memset(this, 0, sizeof(*this)); } | ||
| CryptoHash() { memset(static_cast<void *>(this), 0, sizeof(*this)); } |
Contributor
There was a problem hiding this comment.
Claude had an interesting thought on this, not for now, but for future. Maybe he's right, and we could simplify this "core" class.
The warning symptom is that a user-defined default constructor and
user-defined copy-assignment make the union non-trivially-copyable even
though every member is a `uint*_t` array. A cleaner long-term fix
(master only — not for 9.2.x) would be to initialize `u64{}` in-class
and default `operator=`, making the union genuinely trivially copyable
and retiring the memset/memcpy entirely. Filing a follow-up on master is
the right venue for that — this PR is the correct minimum for the
release branch.
zwoop
approved these changes
May 13, 2026
Contributor
|
One thought / comment (not sure what we did for master), and likely for @bneradt : Does the changes to TextView also need to go into the libswoc code repository ? |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Four issues from newer Apple clang (version 21):
TextView.h: -Wdeprecated-literal-operator flags the whitespace between
""and the suffix identifier in user-defined literal operator declarations. Remove the space inoperator"" _tvandoperator"" _sv.configure.ac: the version check added in PR Make 9.2.x buildable on macOS 26 #12834 only applied -Wno-cast-function-type-mismatch when Apple clang was exactly version 17, so the flag was silently skipped on 21+. Extend the check to match version >= 17.
CryptoHash.h: memset/memcpy on non-trivially-copyable union type trip -Wnontrivial-memcall. Cast
thistovoid *.HostStatus.cc: same issue with bzero on HostStatRec.